package com.Pounds.service.Impl;

import com.Pounds.pojo.User;
import com.Pounds.pojo.UserPrivacy;
import com.Pounds.dao.UserDao;
import com.Pounds.service.UserService;
import org.apache.catalina.startup.UserConfig;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.List;

/**
 * _ooOoo_
 * o8888888o
 * 88" . "88
 * (| -_- |)
 * O\  =  /O
 * ____/`---'\____
 * .'  \\|     |//  `.
 * /  \\|||  :  |||//  \
 * /  _||||| -:- |||||-  \
 * |   | \\\  -  /// |   |
 * | \_|  ''\---/''  |   |
 * \  .-\__  `-`  ___/-. /
 * ___`. .'  /--.--\  `. . __
 * ."" '<  `.___\_<|>_/___.'  >'"".
 * | | :  `- \`.;`\ _ /`;.`/ - ` : | |
 * \  \ `-.   \_ __\ /__ _/   .-` /  /
 * ======`-.____`-.___\_____/___.-`____.-'======
 * `=---='
 * ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 * 佛祖保佑        永无BUG
 * 佛曰:
 * 写字楼里写字间，写字间里程序员；
 * 程序人员写程序，又拿程序换酒钱。
 * 酒醒只在网上坐，酒醉还来网下眠；
 * 酒醉酒醒日复日，网上网下年复年。
 * 但愿老死电脑间，不愿鞠躬老板前；
 * 奔驰宝马贵者趣，公交自行程序员。
 * 别人笑我忒疯癫，我笑自己命太贱；
 * 不见满街漂亮妹，哪个归得程序员？
 */

@Service
public class UserServiceImpl implements UserService {

    private enum UserRegisterError {
        Normal,
        RepeatError,
        DataFormatError,
        EmptyInfoError,
        UnknownError
    }

    private enum UserLoginError {
        Normal,
        DataFormatError,
        EmptyInfoError,
        AOPInfoError,
        UnknownError
    }

    @Autowired
    private UserDao userDao;

    @Override
    public List<User> findAll() {
        return userDao.findAll();
    }

    @Override
    public String register(String username, String account, String password) {
        if (username == null || account == null || password == null) {
            return UserRegisterError.DataFormatError.toString();
        } else if (username.isEmpty() || account.isEmpty() || password.isEmpty()) {
            return UserRegisterError.EmptyInfoError.toString();
        } else if (userDao.findUserAccount(account) == null) {
            return UserRegisterError.RepeatError.toString();
        }

        userDao.newUser(username, account, account);
        return UserRegisterError.Normal.toString();
    }

    @Override
    public String login(String account, String password) {
        if (account == null || password == null) {
            return UserLoginError.DataFormatError.toString();
        } else if (account.isEmpty() || password.isEmpty()) {
            return UserLoginError.EmptyInfoError.toString();
        }

        String pd = userDao.getUserPassword(account);

        if (pd == null) {
            return UserLoginError.AOPInfoError.toString();
        } else if (pd.equals(password)) {
            return UserLoginError.Normal.toString();
        } else {
            return UserLoginError.UnknownError.toString();
        }
    }

    @Override
    public String getUserInfo(String userName) {
        return null;
    }

    @Override
    public List<UserPrivacy> getUserPrivacy(String userName) {
        return null;
    }

    @Override
    public List<UserConfig> getUserConfig(String userName) {
        return null;
    }

    @Override
    public List<UserConfig> getOtherInfo(String userName) {
        return null;
    }
}
